package com.ruoyi.controller;


import io.minio.MinioClient;

import io.minio.PutObjectArgs;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;


import java.io.IOException;


/**
 * @author : Xuzhaobo
 * @date : 2024-12-12 16:43
 * @description :
 **/
@RestController
@RequestMapping("/face")
public class FaceController {



    //minIO 文件上传  直接返回图片路径
    @PostMapping("/minIOUpload")
    public String upload(MultipartFile file) throws IOException {
        // 设置 MinIO 连接信息 这里使用API端口 9000 而不是9001
        String endpoint = "http://47.98.51.135:9000";
        String accessKey = "minio";
        String secretKey = "minio123456";
        String bucketName = "2204";
        String bucketUrl = "http://47.98.51.135:9000/" + bucketName; // MinIO bucket URL

        // 获取当前时间戳
        String flag = System.currentTimeMillis() + " ";
        // 获取原始文件名（就是你上传的文件本身的名字）
        String originalFilename = file.getOriginalFilename();
        // 生成新的文件名（时间戳+原始文件名） 避免文件名相同被覆盖
        String fileName = flag + originalFilename;
        // 拼接完整的图片访问路径 URL
        String url = bucketUrl + "/" + fileName;
        try {
            // 创建 MinioClient 实例
            MinioClient minioClient = new MinioClient.Builder()
                    .endpoint(endpoint)
                    .credentials(accessKey, secretKey)
                    .build();

            // 构建文件上传相关信息
            PutObjectArgs args = PutObjectArgs.builder()
                    .bucket(bucketName)
                    .object(fileName)
                    .stream(file.getInputStream(), file.getSize(), -1)
                    //application/octet-stream 告诉浏览器这是一个附件，浏览器会直接进行下载，而不是预览
                    .contentType(("application/octet-stream"))
                    .build();
            // 将文件上传到 MinIO 服务器
            minioClient.putObject(args);

        }catch (Exception e) {
            throw new RuntimeException("文件上传异常: " + e.getMessage(), e);
        }

        return url;
    }


}
